package com.nebula.tlggoods.mapper;

import com.nebula.tlggoods.entity.Goods;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 商品mapper接口
 */
@Mapper
public interface GoodsMapper {

    /**
     * 模糊查询并分页、排序
     *
     * @param keyword  关键字查询 用于搜索功能模糊查询商品
     * @param shopId   店铺id  用于查询店铺所有商品
     * @param sortFlag 排序 0综合，1销量，2价格，3访问量
     * @return
     */
    List<Goods> findAllByFuzzyNameAndPaging(@Param("keyword") String keyword, @Param("shopId") Integer shopId, @Param("sortFlag") Integer sortFlag);

    /**
     * 热门推荐
     *
     * @return
     */
    List<Goods> findPopularGoods();

    /**
     * 根据商品编码得到商品详情
     *
     * @param goodsCode 商品编码
     * @return
     */
    Goods findGoodsParticularsByGoodsCode(@Param("goodsCode") String goodsCode);

    /**
     * 根据三级分类id得到所有同分类商品
     *
     * @param typeId 三级分类id
     * @return
     */
    List<Goods> findGoodsByTypeId(@Param("typeId") Integer typeId);

    /**
     * 相似推荐
     * 根据商品编码得到对应的分类id,查询同分类访问量前十的商品
     *
     * @param goodsCode 商品编码
     * @return
     */
    List<Goods> findSimilarityGoods(@Param("goodsCode") String goodsCode);

    /**
     * 上下级
     *
     * @param saleId  0下架，1上架
     * @param goodsId 商品id
     * @return
     */
    Integer isSale(@Param("saleId") Integer saleId, @Param("goodsId") Integer goodsId);

    /**
     * 删除商品
     *
     * @param goodsId 商品id
     * @return
     */
    Integer delGoods(@Param("goodsId") Integer goodsId);

    /**
     * 统计商品数量
     *
     * @param keyword 关键字
     * @return
     */
    Integer countGoodsQuantity(@Param("keyword") String keyword);

    /**
     * 添加商品
     * @param goods 商品对象
     * @return
     */
    Integer saveGoods(Goods goods);

    /**
     * 修改商品
     * @param goods 商品对象
     * @return
     */
    Integer modifyGoods(Goods goods);

}
